package com.sk.sqd.jdkproxy;

import java.lang.reflect.Proxy;

/**
 * 测试代理
 */
public class JDKProxyTest {

    public static void main(String[] args) {
        RealSubject realSubject = new RealSubject();
        Class[] clas = {Subject.class};
        // 使用 java.lang.reflect.Proxy 的 newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) 方法创建代理对象
        Subject subject = (Subject) Proxy.newProxyInstance(
                Subject.class.getClassLoader(),
                clas,
                new ProxyHandler(realSubject));
        subject.doSomething();
        System.out.println("代理对象的类型 ： " + subject.getClass().getName());
        System.out.println("代理对象所在类的父类型 ： " + subject.getClass().getGenericSuperclass());
    }
}
